#ifndef DATASTRUCTUREDESIGN_LINKEDLIST_H_
#define DATASTRUCTUREDESIGN_LINKEDLIST_H_

#include <data_structure_design/linked_list_node.h>

class LinkedList
{
        LinkedListNode *head;
        
        public:
        
        LinkedList();
        void push_front( double const & a); // add a new element before the one at the front of the list
        void push_back( double const & a); // add a new element after the one at the back of the list
        <LinkedListNode> begin(); // return a node/iterator to the element at the front of the list
        <LinkedListNode> end(); // return a node/iterator to the element at the back of the list
        double & front(); // return the value of the element at the front of the list
        double & back(); // return the value of the element at the end of the list
        <LinkedListNode> insert( double const & a, <LinkedListNode> b ); // insert a new element before the given node/iterator
        unsigned int size(); // return the number of elements in the list

};

#endif // DATASTRUCTUREDESIGN_LINKEDLIST_H_